#ifndef FACERECOGNITION_H
#define FACERECOGNITION_H

#include <QWidget>
#include <QTimer>
#include <QDateTime>
#include <opencv2/opencv.hpp>
#include "face.hpp"
#include <QMouseEvent>
#include "mymessagebox.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class FaceRecognition;
}
QT_END_NAMESPACE

class FaceRecognition : public QWidget
{
    Q_OBJECT

public:
    FaceRecognition(QWidget *parent = nullptr);
    ~FaceRecognition();

protected:
    // 用于拖动窗口的事件处理函数
    void mousePressEvent(QMouseEvent *event) override;
    void mouseMoveEvent(QMouseEvent *event) override;

    void paintEvent(QPaintEvent *event) override;

private slots:
    void updateDateTime();
    void faceclicked();
    void updateFrame(); // 定时器槽函数用于更新帧

private:
    Ui::FaceRecognition *ui;

    // 用于记录拖动时鼠标位置的成员变量
    QPoint m_dragPosition;

    // 添加用于判断是否点击标题栏的成员变量
    bool m_isTitleBarClicked = false;

    QTimer *timer;
    QTimer *timer1;

    cv::VideoCapture cap; // OpenCV 摄像头
    cv::CascadeClassifier cascade; // 人脸检测分类器
    cv::Ptr<cv::face::FaceRecognizer> model; // 人脸识别模型

    void convertMatToQImage(const cv::Mat& mat, QImage& image); // OpenCV Mat 转 Qt QImage
    int Predict(const cv::Mat& src_image); // 识别图片

    QString lastLabel; //记录上一次的标签
    int sameLabelCount; //记录连续相同标签出现的次数
};
#endif // FACERECOGNITION_H
